home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / var / lib / dpkg / info / udev.postinst < prev    next >
Text File  |  2009-11-03  |  6KB  |  233 lines

  1. #!/bin/sh -e
  2. # This script can be called in the following ways:
  3. #
  4. # After the package was installed:
  5. #    <postinst> configure <old-version>
  6. #
  7. #
  8. # If prerm fails during upgrade or fails on failed upgrade:
  9. #    <old-postinst> abort-upgrade <new-version>
  10. #
  11. # If prerm fails during deconfiguration of a package:
  12. #    <postinst> abort-deconfigure in-favour <new-package> <version>
  13. #               removing <old-package> <version>
  14. #
  15. # If prerm fails during replacement due to conflict:
  16. #    <postinst> abort-remove in-favour <new-package> <version>
  17.  
  18.  
  19. # Remove a no-longer used conffile
  20. rm_conffile()
  21. {
  22.     CONFFILE="$1"
  23.  
  24.     if [ -e "$CONFFILE".dpkg-obsolete ]; then
  25.     echo "Removing obsolete conffile $CONFFILE"
  26.     rm -f "$CONFFILE".dpkg-obsolete
  27.     fi
  28. }
  29.  
  30. # Remove a conffile directory if it's not empty
  31. rm_confdir()
  32. {
  33.     CONFDIR="$1"
  34.  
  35.     if [ -d "$CONFDIR" ]; then
  36.     rmdir "$CONFDIR" 2>/dev/null \
  37.         || echo "Unable to remove $CONFDIR, not empty"
  38.     fi
  39. }
  40.  
  41. # Move a conffile without triggering a dpkg question
  42. mv_conffile() {
  43.     OLDCONFFILE="$1"
  44.     NEWCONFFILE="$2"
  45.  
  46.     if [ -e "$OLDCONFFILE".dpkg-moving ]; then
  47.         echo "Preserving user changes to $NEWCONFFILE"
  48.         mv -f "$NEWCONFFILE" "$NEWCONFFILE".dpkg-new
  49.         mv -f "$OLDCONFFILE".dpkg-moving "$NEWCONFFILE"
  50.     elif [ -e "$OLDCONFFILE".dpkg-bak ]; then
  51.     rm -f "$OLDCONFFILE".dpkg-bak
  52.     fi
  53. }
  54.  
  55.  
  56. # Enable udevadm again
  57. enable_udevadm()
  58. {
  59.     if [ -e /sbin/udevadm.upgrade ]; then
  60.         rm -f /sbin/udevadm
  61.         dpkg-divert --local --rename --divert /sbin/udevadm.upgrade \
  62.             --remove /sbin/udevadm
  63.     fi
  64. }
  65.  
  66. # Restart the daemon
  67. restart_udevd()
  68. {
  69.     restart udev || true
  70. }
  71.  
  72.  
  73. # Construct the initial device tree (things udev doesn't provide)
  74. create_devices()
  75. {
  76.     # in a vserver environment, mknod will fail; cf. LP: #144685
  77.     if grep -q ^VxID /proc/self/status; then
  78.     return
  79.     fi
  80.  
  81.     rm -f /lib/udev/devices/fd
  82.     ln -sn /proc/self/fd   /lib/udev/devices/fd
  83.  
  84.     rm -f /lib/udev/devices/stdin
  85.     ln -sn /proc/self/fd/0 /lib/udev/devices/stdin
  86.  
  87.     rm -f /lib/udev/devices/stdout
  88.     ln -sn /proc/self/fd/1 /lib/udev/devices/stdout
  89.  
  90.     rm -f /lib/udev/devices/stderr
  91.     ln -sn /proc/self/fd/2 /lib/udev/devices/stderr
  92.  
  93.     rm -f /lib/udev/devices/core
  94.     ln -sn /proc/kcore     /lib/udev/devices/core
  95.  
  96.     rm -f /lib/udev/devices/sndstat
  97.     ln -sn /proc/asound/oss/sndstat /lib/udev/devices/sndstat
  98.  
  99.     rm -f /lib/udev/devices/ppp
  100.     mknod -m 600 /lib/udev/devices/ppp c 108 0
  101.  
  102.     rm -f /lib/udev/devices/loop0
  103.     mknod -m 600 /lib/udev/devices/loop0 b 7 0
  104.  
  105.     rm -f /lib/udev/devices/net/tun
  106.     mknod -m 600 /lib/udev/devices/net/tun c 10 200
  107.  
  108.     # Add devices we need to start udevd itself
  109.     rm -f /lib/udev/devices/console
  110.     mknod -m 600 /lib/udev/devices/console c 5 1
  111.  
  112.     rm -f /lib/udev/devices/null
  113.     mknod -m 600 /lib/udev/devices/null c 1 3
  114. }
  115.  
  116. # Remove things from the initial device tree that are no longer required
  117. remove_devices()
  118. {
  119.     rm -f /lib/udev/devices/MAKEDEV
  120.     rm -f /lib/udev/devices/kmem
  121. }
  122.  
  123. # Write the initial copy of the persistent net and cd rules
  124. seed_persistent_rules()
  125. {
  126.     FILE=/etc/udev/rules.d/70-persistent-net.rules
  127.     if [ ! -e $FILE ]; then
  128.     echo "# This file maintains persistent names for network interfaces." > $FILE
  129.     echo "# See udev(7) for syntax." >> $FILE
  130.     echo "#" >> $FILE
  131.     echo "# Entries are automatically added by the 75-persistent-net-generator.rules" >> $FILE
  132.     echo "# file; however you are also free to add your own entries." >> $FILE
  133.     fi
  134.  
  135.     FILE=/etc/udev/rules.d/70-persistent-cd.rules
  136.     if [ ! -e $FILE ]; then
  137.     echo "# This file maintains persistent names for CD/DVD reader and writer devices." > $FILE
  138.     echo "# See udev(7) for syntax." >> $FILE
  139.     echo "#" >> $FILE
  140.     echo "# Entries are automatically added by the 75-cd-aliases-generator.rules" >> $FILE
  141.     echo "# file; however you are also free to add your own entries provided you" >> $FILE
  142.     echo "# add the ENV{GENERATED}="1" flag to your own rules as well." >> $FILE
  143.     fi
  144. }
  145.  
  146.  
  147. # Notify the user that a reboot is required
  148. reboot_required()
  149. {
  150.     if [ -x /usr/share/update-notifier/notify-reboot-required ]; then
  151.     /usr/share/update-notifier/notify-reboot-required
  152.     fi
  153. }
  154.  
  155. # Update the initramfs
  156. update_initramfs()
  157. {
  158.     update-initramfs -u
  159. }
  160.  
  161.  
  162. # Remove Ubuntu rules in favour of upstream ones
  163. rm_ubuntu_rules()
  164. {
  165.     rm_conffile /etc/udev/rules.d/05-options.rules
  166.     rm_conffile /etc/udev/rules.d/05-udev-early.rules
  167.     rm_conffile /etc/udev/rules.d/20-names.rules
  168.     rm_conffile /etc/udev/rules.d/30-cdrom_id.rules
  169.     rm_conffile /etc/udev/rules.d/40-basic-permissions.rules
  170.     rm_conffile /etc/udev/rules.d/40-permissions.rules
  171.     rm_conffile /etc/udev/rules.d/60-persistent-input.rules
  172.     rm_conffile /etc/udev/rules.d/60-persistent-storage-tape.rules
  173.     rm_conffile /etc/udev/rules.d/60-persistent-storage.rules
  174.     rm_conffile /etc/udev/rules.d/60-symlinks.rules
  175.     rm_conffile /etc/udev/rules.d/61-persistent-storage-edd.rules
  176.     rm_conffile /etc/udev/rules.d/65-id-type.rules
  177.     rm_conffile /etc/udev/rules.d/66-persistent-storage-edd.rules
  178.     rm_conffile /etc/udev/rules.d/75-cd-aliases-generator.rules
  179.     rm_conffile /etc/udev/rules.d/75-persistent-net-generator.rules
  180.     rm_conffile /etc/udev/rules.d/80-programs.rules
  181.     rm_conffile /etc/udev/rules.d/90-modprobe.rules
  182.     rm_conffile /etc/udev/rules.d/95-udev-late.rules
  183. }
  184.  
  185. # An old (gutsy-era) version of udev wrote persistent-net.rules using
  186. # ATTRS{}, which no longer works; change to ATTR{}
  187. fix_persistent_net_rules()
  188. {
  189.     if [ -e /etc/udev/rules.d/70-persistent-net.rules ]; then
  190.     sed -i -e 's/\bATTRS{/ATTR{/g' /etc/udev/rules.d/70-persistent-net.rules
  191.     fi
  192. }
  193.  
  194.  
  195. case "$1" in
  196.     configure)
  197.     # Upgrade from intrepid
  198.     if dpkg --compare-versions "$2" lt "140-2"; then
  199.         rm_ubuntu_rules
  200.         fix_persistent_net_rules
  201.     fi
  202.  
  203.     # Upgrade from jaunty
  204.     if dpkg --compare-versions "$2" lt "141-3"; then
  205.         remove_devices
  206.         rm_conffile /etc/scsi_id.config
  207.     fi
  208.  
  209.     create_devices
  210.     seed_persistent_rules
  211.     restart_udevd
  212.     enable_udevadm
  213.     update_initramfs
  214.     ;;
  215.  
  216.     abort-upgrade|abort-deconfigure|abort-remove)
  217.     ;;
  218.  
  219.     *)
  220.     echo "$0 called with unknown argument \`$1'" 1>&2
  221.     exit 1
  222.     ;;
  223. esac
  224.  
  225. # Automatically added by dh_installinit
  226. update-rc.d -f udev remove >/dev/null || exit $?
  227. # End automatically added section
  228. # Automatically added by dh_installinit
  229. update-rc.d -f udev-finish remove >/dev/null || exit $?
  230. # End automatically added section
  231.  
  232. exit 0
  233.